// axios请求相关

import axios from 'axios'
// 导入消息通知组件封装类
import { toast } from '~/composables/util'
// 引入cookie封装类
import { getToken } from '~/composables/auth'
import store from '~/store'

const service = axios.create({
  baseURL: "/api"
})

// 添加请求拦截器
service.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  // 拿到token 放到请求头上
  const token = getToken()
  if (token) {
    config.headers['token'] = token
  }

  return config;
}, function (error) {
  // 对请求错误做些什么

  return Promise.reject(error);
});

// 添加响应拦截器
service.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  return response.data.data;
}, function (error) {
  // 对响应错误做点什么
  const msg = error.response.data.msg || "请求失败"

  if (msg == "非法token，请先登录！") {
    store.dispatch("logout").finally(() => location.reload())
  }
  // console.log(error)
  toast(msg, 'error')

  return Promise.reject(error);
});

export default service